package database;

import app.Usuario;
import java.sql.*;

/**
 * Clase UsuarioDAO:<p>
 * Interfaz con la base de datos para Usuario.
 * 
 * @author jaredkurosawa
 * @author Alberto Cabrera Perez
 */
public class UsuarioDAO {
	private Statement st = null;
	
	public UsuarioDAO (Connection conn)
	{
		try {
			this.st = conn.createStatement();
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
	
	/**
	 * Metodo para a�adir un nuevo usuario a la base de datos.
	 * 
	 * @param user contiene los datos del nuevo usuario.
	 */
	public boolean nuevo (Usuario user)
	{
		try {
			st.executeUpdate("INSERT INTO Usuario" +
							 " VALUES ('" + user.getUsuario() + "', "
									      + user.getTipo() + ", " +
									  "'" + user.getCorreo() + "', " +
									  "'" + user.getPassword() + "')"
  							);
			st.executeUpdate("INSERT INTO DatosUsuario " +
							 "VALUES ('" + user.getUsuario() + "', "
								   + "'" + user.getNombre() + "', "
								         + user.getEdad() + ")"
							);
		} catch (SQLException e) {
			return false;
		}
		return true;
	}
	
	/**
	 * Metodo para actualizar los datos de un usuario
	 */
	public boolean actualizar (Usuario user)
	{
		try {
			st.executeUpdate("UPDATE Usuario"
					       + "SET password='" + user.getPassword() + "', correo='" + user.getCorreo() + "' "
					       + "WHERE usuario='" + user.getUsuario() + "'"
							);
		} catch (SQLException e) {
			e.printStackTrace();
			return false;
		}
		return true;
	}

	/**
	 * Metodo para eliminar a un usuario
	 */
	public boolean eliminar (Usuario user)
	{
		try {
			st.executeUpdate("DELETE " +
							 "FROM Usuario " +
							 "WHERE usuario='" + user.getUsuario() + "'" 
							 );
		} catch (SQLException e) {
			e.printStackTrace();
			return false;
		}
		return true;
	}
	
	/**
	 * Metodo para identificar un usuario (WIP)
	 */
	public Usuario identificarse(String usuario, String password)
	{
        ResultSet rs;
            
        try {
            rs = st.executeQuery ("SELECT * " +
                                  "FROM usuario " +
                                  "WHERE usuario='" + usuario + "' AND password='" + password +"'");

            if (rs.next ())
            {
            	Usuario user = new Usuario ();
	
              	user.setUsuario (rs.getString ("usuario"));
              	user.setTipo (rs.getInt ("tipo"));
              	user.setPassword (rs.getString ("password"));
              	user.setCorreo (rs.getString ("correo"));
            
              	return user;
            }
            
            return null;
        } catch (SQLException e) {
            e.printStackTrace ();
            return null;
        }
	}
}
